package com.iut2.projet2013;

import android.net.Uri;
import android.provider.BaseColumns;
import android.provider.ContactsContract;

/**
 * Le "contrat" du provider PicAnnotProvider
 * Ce contrat dŽfini les noms de table, d'attributs, les URI, les types des donnŽs gŽrŽes par le provider
 * En fait toutes les cha”nes de caractres du provider sont centralisŽe dans cette classe
 * @author jerome
 *
 */
public abstract class Contract {

	/**
	 * Authorite du content provider PicAnnotContract
	 */
	public final static String AUTHORITY="com.projet2013";
	
	/**
	 * URI de base du content provider PicAnnotContract
	 */
	protected final static Uri BASE_URI=Uri.parse("content://"+AUTHORITY);
	
	
	/**
	 * Constantes relatives ˆ la table People
	 * le "implements BaseColumns" permet de rŽcupŽrer les constantes _ID="_id"
	 * @author Jerome David
	 *
	 */
	public static abstract class People implements BaseColumns {
		
		protected final static String TABLE_NAME="people";
		
		/* Les attributs de la table people */
		public final static String URI="uri";
		//public static final String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
		
		/* L'uri de la table people */
		public final static Uri CONTENT_URI=Uri.withAppendedPath(BASE_URI, "people");
		
		/* le type mime de la table people */
		public final static String CONTENT_TYPE="vnd.android.cursor.dir/vnd.com.projet2013.people";
		/* le type mime d'une ligne de la table people */
		public final static String CONTENT_ITEM_TYPE="vnd.android.cursor.item/vnd.com.projet2013.people";
		
		/**
		 * Constantes relatives ˆ la table People/#/Picture
		 * cette classe etend PicAnnotContract.Picture pour rŽcupŽrer les attributs de la table Picture
		 * @author Jerome David
		 */
		public static abstract class Picture extends Contract.Picture {
			public final static String CONTENT_PATH="picture";
		}
		
	}
	
	/**
	 * Constantes relatives ˆ la table Annotation
	 * cette classe est protected car les attributs n'ont pas ˆ tre accessibles de l'extŽrieur
	 * @author Jerome David
	 */
	protected static abstract class Annotation {
		protected final static String TABLE_NAME="annotation";
		public final static String PEOPLE_ID="people_id";
		public final static String PICTURE_ID="picture_id";
	}
	
	/**
	 * Constantes relatives ˆ la table Picture
	 * le "implements BaseColumns" permet de rŽcupŽrer les constantes _ID="_id"
	 * @author Jerome David
	 *
	 */
	public static abstract class Picture implements BaseColumns {
		
		protected final static String TABLE_NAME="picture";
		
		/* Les attributs de la table picture */
		public final static String URI="uri";
		
		/* L'uri de la table picture */
		public final static Uri CONTENT_URI=Uri.withAppendedPath(BASE_URI, "picture");
		
		/* le type mime de la table picture */
		public final static String CONTENT_TYPE="vnd.android.cursor.dir/vnd.com.projet2013.picture";
		
		/* le type mime d'une ligne de la table people */
		public final static String CONTENT_ITEM_TYPE="vnd.android.cursor.item/vnd.com.projet2013.picture";
		
		
		/**
		 * Constantes relatives ˆ la table Picture/#/People
		 * cette classe etend PicAnnotContract.People pour rŽcupŽrer les attributs de la table PEOPLE
		 * @author Jerome David
		 *
		 */
		public static abstract class People extends Contract.People {
			
			/** 
			 * Chemin ˆ concatŽner ˆ l'URI d'une Picture pour obtenir l'URI d'une table Picture/#/People
			 */
			public final static String CONTENT_PATH="people";
			
		}
		
	}
	
}
